import main
import time
import _thread
import requests
from socket import *


# 创建socket
tcp_server_socket = socket(AF_INET, SOCK_STREAM)

# 本地信息 可以修改此地址为0.0.0.0
address = ('0.0.0.0', 7788)

# 绑定
tcp_server_socket.bind(address)

# 使用socket创建的套接字默认的属性是主动的，使用listen将其变为被动的，这样就可以接收别人的链接了listen里的数字表征同一时刻能连接客户端的程度.
tcp_server_socket.listen(128)

# 如果有新的客户端来链接服务器，那么就产生一个新的套接字专门为这个客户端服务
# client_socket用来为这个客户端服务
# tcp_server_socket就可以省下来专门等待其他新客户端的链接
# clientAddr 是元组（ip，端口）
client_socket, clientAddr = tcp_server_socket.accept()


# 延迟循环监听数据取回（线程类）
def timerecv(threadName, delay):
    a = 1
    print('启动监听线程', threadName)
    while a == 1:
        recv_data = client_socket.recv(1024)  # 接收1024个字节
        if recv_data.decode('gbk') == "" or recv_data.decode('gbk') == " ":
            time.sleep(0.1)
        else:
            print('\n返回:', recv_data.decode('gbk'))
            time.sleep(0.1)


# 接收对方发送过来的数据，和udp不同返回的只有数据
recv_data = client_socket.recv(1024)  # 接收1024个字节
print('接收到的数据为:', recv_data.decode('gbk'))

try:
    _thread.start_new_thread(timerecv, ('Thread1', 1,))
    print("\n提示: 启动循环监听")
except:
    print("\nError: 无法启动线程")

time.sleep(1)
# 提示用户输入数据
send_data = input('\n要发送的数据[\"Q!\"-退出|\"H!\"-帮助 ]：')
while send_data != "Q!":
    client_socket.send(send_data.encode('gbk')) #
    send_data = input('\n要发送的数据[\"Q!\"-退出|\"H!\"-帮助 ]：')
else:
    # 关闭为这个客户端服务的套接字，只要关闭了，就意味着为不能再为这个客户端服务了，如果还需要服务，只能再次重新连接
    client_socket.close()

# 发送一些数据到客户端

